/*
 * @Author: error: error: git config user.name & please set dead value or install git && error: git config user.email & please set dead value or install git & please set dead value or install git
 * @Date: 2025-07-11 09:16:23
 * @LastEditors: error: error: git config user.name & please set dead value or install git && error: git config user.email & please set dead value or install git & please set dead value or install git
 * @LastEditTime: 2025-07-12 17:36:24
 * @FilePath: /yjl/NetProjectVideo/MYSQL_test.c
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
#include<stdlib.h>
#include<stdio.h>
#include<unistd.h>
#include<string.h>
#include<mysql/mysql.h>

int add(MYSQL* mysql)
{
    char* sql="insert into test_tb values(null,18,'小张',88.5);";
    int ret=mysql_query(mysql,sql);
    if(ret!=0)
    {
        printf("query sql failed:%s\n",mysql_error(mysql));
        return (-1);
    }
    return 0;
}

int mod(MYSQL* mysql)
{
    char* sql="update test_tb set name='小王' where id=6;";
    int ret=mysql_query(mysql,sql);
    if(ret!=0)
    {
        printf("query sql failed:%s\n",mysql_error(mysql));
        return (-1);
    }
    return 0;
}

int find(MYSQL* mysql)
{
    char* sql="select * from test_tb : ";// 查找全部test_db里面的数据
    int ret=mysql_query(mysql,sql);
    if(ret!=0)
    {
        printf("query sql failed:%s\n",mysql_error(mysql));
        return (-1);
    }

    // 保存查询到的结果
    MYSQL_RES* res=mysql_store_result(mysql);
    if(res==NULL)
    {
        printf("store result failed:%s",mysql_error(mysql));
        return (-1);
    }
    // 获取查询到的结果有多少行，多少列？(这样才能遍历)
    int row_num=mysql_num_rows(res);
    int col_num=mysql_num_fields(res);
    // 遍历结果集 获取每一行的数据
    for(int i=0;i<row_num;i++)
    {
        MYSQL_ROW row=mysql_fetch_row(res);
        for(int j=0;j<col_num;j++)
        {
            printf("%s\t",row[j]);
        }
        // 先只打印每一行里面的元素，之后就换行
        printf("\n");
    }
    mysql_free_result(res);

    return 0;
}

int del(MYSQL* mysql)// 
{
    char* sql="delete from test_tb where id=5;";
    int ret=mysql_query(mysql,sql);
    if(ret!=0)
    {
        printf("query sql failed:%s\n",mysql_error(mysql));
        return (-1);
    }
    return 0;
}

int main()
{
    // 1、初始化操作句柄
    MYSQL* mysql=mysql_init(NULL);
    // 2、链接MYSQL服务器
    if(mysql_real_connect(mysql,"127.0.0.1","root","123456","test_db",0,NULL,0)==NULL)
    {
        printf("connect failed!\n");
        return -1;
    }
    // 3、设置客户端字符集
    mysql_set_character_set(mysql,"utf8");

    //add(mysql);
    //del(mysql);
    //mod(mysql);
    find(mysql);

    // 4、最后不使用MYSQL的时候最好关闭
    mysql_close(mysql);
    return 0;
}